home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 240 (DVD) / Issue 240 - February 2008 - DPCS0208DVD.ISO / Extras / NetObjects Fusion / NOF10.exe / data1.cab / Program_Executable_Files / NetObjects_System / validation.js < prev    next >
Encoding:
Text File  |  2007-04-11  |  10.2 KB  |  342 lines

  1. var originalCssClasses = new Array();
  2. var originalCssClassesInitialized = new Array();
  3. function NOF_isRequired( formField ) {
  4. if ( formField.type != undefined ) {
  5. if ( (formField.type).indexOf("checkbox") != -1 ) {
  6. if ( formField.checked ) {
  7. return true;
  8. }
  9. } else if ( (formField.type).indexOf("radio") != -1 ) {
  10. if ( formField.checked ) {
  11. return true;
  12. }
  13. } else if ( (formField.type).indexOf("select") != -1 ) {
  14. for ( var i = 0; i < formField.length; i++ ) {
  15. if ( formField[ i ].selected && formField[ i ].value != "" ) {
  16. return true;
  17. }
  18. }
  19. } else {
  20. if ( formField.value != null && formField.value != "" ) {
  21. return true;
  22. }
  23. }
  24. } else {
  25. if ( formField.length > 1 ) {
  26. for ( var i = 0; i < formField.length; i++ ) {
  27. if ( (formField[ i ].type).indexOf("select") != -1 ) {
  28. if ( formField[ i ].selected && formField[ i ].value != "" ) {
  29. return true;
  30. }
  31. }
  32. else {
  33. if ( formField[ i ].checked ) {
  34. return true;
  35. }
  36. }
  37. }
  38. } else {
  39. if ( formField[ 0 ].selected ) {
  40. return true;
  41. }
  42. }
  43. }
  44. return false;
  45. }
  46. function NOF_isEmailAddress( formField ) {
  47. var emailRe = /^(\w[-\w\.]*)?\w(@|%40)\w([\-\.]?\w)*\.[a-z]{2,5}$/i;
  48. return ( ( formField.value != "" ) ? ( NOF_isRequired( formField ) && emailRe.test( formField.value ) ) : true );
  49. }
  50. function NOF_isDomainName( formField ) {
  51. var domainRe = /^\w([\-\.]?\w)*\.[a-z]{2,5}$/i;
  52. return ( ( formField.value != "" ) ? ( NOF_isRequired( formField ) && domainRe.test( formField.value ) ) : true );
  53. }
  54. function NOF_isNumber( formField ) {
  55. var numberRe = /^\d+(\.?\d+)*$/;
  56. return ( ( formField.value != "" ) ? (NOF_isRequired( formField ) && numberRe.test( formField.value ) ) : true );
  57. }
  58. function NOF_isInRange( formField, min, max ) {
  59. var value = NOF_isRequired( formField ) ? parseFloat( formField.value ) : NaN;
  60. var minValue = parseFloat( min );
  61. var maxValue = parseFloat( max );
  62. return ( ( formField.value != "" ) ? (!isNaN( value ) && value >= minValue && value <= maxValue ) : true );
  63. }
  64. function NOF_isLengthInRange( formField, min, max ) {
  65. return ( ( formField.value != "" ) ? (NOF_isRequired( formField ) && formField.value.length >= min && formField.value.length <= max ) : true );
  66. }
  67. function NOF_isPhoneNumber( formField, mask ) {
  68. var newPhoneNumber = "";
  69. if ( formField.value == "" ) { return true; }
  70. for ( var i = 0; i < mask.length; i++ ) {
  71. if ( mask.charAt(i).toLowerCase() == "d" ) {
  72. if ( i < formField.value.length ) {
  73. newPhoneNumber = newPhoneNumber + formField.value.charAt(i);
  74. }
  75. else {
  76. newPhoneNumber = newPhoneNumber + mask.charAt(i);
  77. }
  78. }
  79. else {
  80. newPhoneNumber = newPhoneNumber + mask.charAt(i);
  81. }
  82. }
  83. return ( NOF_isRequired( formField ) && ( newPhoneNumber == formField.value ) );
  84. }
  85. function NOF_isValidCreditCard( formField, cardType ) {
  86. if ( formField.value == "" ) { return true; }
  87. var ccType = cardType.toLowerCase();
  88. var ccNumber = NOF_isRequired( formField ) ? formField.value : "";
  89. var ccNumberLength = ccNumber.length;
  90. var firstChar = ccNumber.charAt( 0 );
  91. var secondChar = ccNumber.charAt( 1 );
  92. if ( ccType == "visa" ) {
  93. return ( ( ccNumberLength == 16 || ccNumberLength == 13 ) && firstChar == "4" );
  94. }
  95. else if ( ccType == "mastercard" ) {
  96. return ( ccNumberLength == 16 && firstChar == "5" && parseInt( secondChar ) >= 1 && parseInt( secondChar ) <= 5 );
  97. }
  98. else if ( ccType == "american express" ) {
  99. return ( ccNumberLength == 15 && firstChar == "3" && ( secondChar == "4" || secondChar == "7" ) );
  100. }
  101. else if ( ccType == "discover" ) {
  102. return ( ccNumberLength == 16 && ccNumber.substring( 0, 4 ) == "6011" );
  103. }
  104. return false;
  105. }
  106. function NOF_isValidDate( formField, mask ) {
  107. if ( formField.value == "" ) { return true; }
  108. var dateParts = new Array();
  109. var currDate = new Date();
  110. var currYear = currDate.getYear();
  111. var strDate = NOF_isRequired( formField ) ? formField.value : "";
  112. var delimitationChar = "/";
  113. var monthMask = "mm", dayMask = "dd", yearMask = "yyyy";
  114. var monthPos = 0, dayPos = 1, yearPos = 2;
  115. if ( mask.substring(0,1).toLowerCase() == "m" ) {
  116. var re = new RegExp("([mM]{2,3})([\/\s\-\|\.])([dD]{2})([\/\s\-\|\.])([yY]{4}|[yY]{2})");
  117. var m = re.exec(mask);
  118. if (m == null) {
  119. return false;
  120. } else {
  121. if ( m.length == 6 ) {
  122. delimitationChar = m[2];
  123. if ( delimitationChar == m[4] ) {
  124. monthMask = m[1];
  125. dayMask = m[3];
  126. yearMask = m[5];
  127. }
  128. else {
  129. }
  130. }
  131. else {
  132. }
  133. }
  134. }
  135. else if ( mask.substring(0,1).toLowerCase() == "d" ) {
  136. var re = new RegExp("([dD]{2})([\/\s\-\|\.])([mM]{2,3})([\/\s\-\|\.])([yY]{4}|[yY]{2})");
  137. var m = re.exec(mask);
  138. monthPos = 1;
  139. dayPos = 0;
  140. yearPos = 2;
  141. if (m == null) {
  142. alert("No match");
  143. } else {
  144. if ( m.length == 6 ) {
  145. delimitationChar = m[2];
  146. if ( delimitationChar == m[4] ) {
  147. dayMask = m[1];
  148. monthMask = m[3];
  149. yearMask = m[5];
  150. }
  151. else {
  152. }
  153. }
  154. else {
  155. }
  156. }
  157. }
  158. else {
  159. }
  160. if ( currYear.toString().length < 4 ) {
  161. currYear = currYear + 1900;
  162. }
  163. if ( strDate.indexOf( delimitationChar ) > 0) {
  164. dateParts = strDate.split( delimitationChar );
  165. if ( dateParts.length != 3 ) {
  166. return false;
  167. }
  168. for ( var i = 0; i < dateParts.length; i++ ) {
  169. if ( isNaN( dateParts[ i ] ) ) {
  170. return false;
  171. }
  172. }
  173. var month = parseInt( dateParts[ monthPos ], 10);
  174. if ( month < 1 || month > 12 ) {
  175. return false;
  176. }
  177. var day = parseInt( dateParts[ dayPos ], 10);
  178. if ( day < 1 || day > 31 ) {
  179. return false;
  180. }
  181. var year = parseInt( dateParts[ yearPos ], 10);
  182. if ( yearMask.length == 2 ) {
  183. if ( dateParts[ yearPos ].length != 2 ) {
  184. return false;
  185. }
  186. }
  187. else {
  188. if ( year < currYear - 200 || year > currYear + 200 ) {
  189. return false;
  190. }
  191. }
  192. return true;
  193. }
  194. return false;
  195. }
  196. function NOF_validateForm( formObj, validationInfo, showAllErrors, errorOutput, errMessage ) {
  197. var errMsg = "";
  198. var fieldLabelId;
  199. var fieldId;
  200. if ( originalCssClassesInitialized[formObj.name] == null )
  201. {
  202. originalCssClassesInitialized[formObj.name] = false;
  203. }
  204. if ( originalCssClasses[formObj.name] == null )
  205. {
  206. originalCssClasses[formObj.name] = new Array;
  207. }
  208. if ( !originalCssClassesInitialized[formObj.name] ) {
  209. for ( var elementName in validationInfo ) {
  210. fieldId = NOF_getElementId( formObj.elements[ elementName ] );
  211. fieldLabelId = NOF_getElementLabelObj( fieldId );
  212. originalCssClasses[formObj.name][ elementName ] = new Array();
  213. originalCssClasses[formObj.name][ elementName ][ "label" ] = new Array();
  214. for ( var i = 0; i < fieldLabelId.length; i++ ) {
  215. originalCssClasses[formObj.name][ elementName ][ "label" ][ i ] = NOF_getElementProperty( fieldLabelId[ i ], "className" );
  216. }
  217. originalCssClasses[formObj.name][ elementName ][ "field" ] = NOF_getElementProperty( fieldId, "className" );
  218. }
  219. originalCssClassesInitialized[formObj.name] = true;
  220. }
  221. else {
  222. for ( var i in originalCssClasses[formObj.name] ) {
  223. fieldId = NOF_getElementId( formObj.elements[ i ] );
  224. fieldLabelId = NOF_getElementLabelObj( fieldId );
  225. for ( var j = 0; j < fieldLabelId.length; j++ ) {
  226. NOF_setElementProperty( fieldLabelId[j], "className", originalCssClasses[formObj.name][ i ][ "label" ][ j ] );
  227. }
  228. NOF_setElementProperty( fieldId, "className", originalCssClasses[formObj.name][ i ][ "field" ] );
  229. }
  230. }
  231. for ( var i in validationInfo ) {
  232. var errorFound = false;
  233. for ( var j = 0; j < validationInfo[ i ].length; j++ ) {
  234. var validationRecord = validationInfo[ i ][ j ];
  235. var functionName = validationRecord[ 0 ];
  236. var functionArgs = validationRecord[ 1 ];
  237. var errorMessage = validationRecord[ 2 ];
  238. var errorLabelCss = validationRecord[ 3 ];
  239. var errorFieldCss = validationRecord[ 4 ];
  240. if ( functionArgs.length
  241. ? eval( "!" + functionName + "(formObj.elements['" + i + "'],'" + functionArgs.join("','") + "')" )
  242. : eval( "!" + functionName + "(formObj.elements['" + i + "'])") ) {
  243. errorFound = true;
  244. errMsg += "\n" + errorMessage;
  245. fieldId = NOF_getElementId( formObj.elements[ i ] );
  246. fieldLabelId = NOF_getElementLabelObj( fieldId );
  247. for ( var k = 0; k < fieldLabelId.length; k++ ) {
  248. fieldLabelId[k].className = errorLabelCss;
  249. NOF_setElementProperty( fieldLabelId[j], "className", errorLabelCss );
  250. }
  251. NOF_setElementProperty( fieldId,"className", errorFieldCss );
  252. }
  253. if ( errorFound && !showAllErrors ) {
  254. break;
  255. }
  256. }
  257. }
  258. if ( errMsg != "" ) {
  259. if ( errMessage == null || errMessage == "" ) {
  260. errMessage = "";
  261. } else {
  262. errMessage = errMessage + "\n";
  263. }
  264. if ( errorOutput == null || errorOutput == "" ) {
  265. alert( errMessage + errMsg );
  266. } else {
  267. NOF_setElementProperty( errorOutput, "innerHTML", (errMessage + errMsg).split("\n").join("<BR>") );
  268. }
  269. return false;
  270. } else {
  271. if ( errorOutput != null || errorOutput != "" ) {
  272. NOF_setElementProperty( errorOutput, "innerHTML", "" );
  273. }
  274. }
  275. return true;
  276. }
  277. function NOF_getElementId( element ) {
  278. if ( element.id == undefined ) {
  279. if ( element.length > 1 && element[ 0 ] != undefined ) {
  280. return ( element[ 0 ].id != undefined ) ? element[ 0 ].id : "";
  281. }
  282. return "";
  283. }
  284. return element.id;
  285. }
  286. function NOF_getElementProperty( element, property ) {
  287. if ( typeof element != "string" ) {
  288. if ( element.property != undefined ) {
  289. return eval("element." + property);
  290. } else {
  291. return "";
  292. }
  293. } else {
  294. if ( document.getElementById ) {
  295. if ( document.getElementById( element ) != null ) {
  296. return eval( "document.getElementById('" + element + "')." + property );
  297. }
  298. } else {
  299. if ( document.layers[ element ] != undefined ) {
  300. }
  301. }
  302. }
  303. }
  304. function NOF_getElementLabelObj( element ) {
  305. var labelArray = new Array();
  306. if ( element != "" ) {
  307. if ( document.getElementById ) {
  308. if ( document.getElementById( element ) != null ) {
  309. for ( var i = 0; i < document.getElementsByTagName( "label" ).length; i++ ) {
  310. if ( document.getElementsByTagName( "label" )[ i ].htmlFor == document.getElementById( element ).id ) {
  311. labelArray[ labelArray.length ] = document.getElementsByTagName( "label" )[ i ];
  312. }
  313. }
  314. }
  315. } else {
  316. alert(element + " : " + document.layers[ element ]);
  317. if ( document.layers[ element ] != undefined ) {
  318. alert('NOF_getElementLabelObj_: ' + document.ids[element]);
  319. }
  320. }
  321. }
  322. return labelArray;
  323. }
  324. function NOF_setElementProperty( element, property, value ) {
  325. if ( document.getElementById ) {
  326. if ( document.getElementById( element ) != null ) {
  327. eval( "document.getElementById('" + element + "')." + property + "= value;" );
  328. }
  329. } else {
  330. if ( document.layers[ element ] != undefined ) {
  331. if ( property == "innerHTML" ) {
  332. with ( document.layers[ element ].document ) {
  333. open();
  334. write( "<font class='lbErr'>" + value + "</font>" );
  335. close();
  336. }
  337. }
  338. }
  339. }
  340. }
  341.  
  342.